Embodiments presented herein generally relate to software debugging, and more specifically, to classifying errors in an application that are distinctly related to a system library.
Generally, a dynamic analysis tool may be linked to an executable application for debugging purposes. The dynamic analysis tool may detect various errors that occur during execution of the application. The dynamic analysis tool instruments object code and system libraries at multiple locations to track specific information related to each error. Doing so allows the dynamic analysis tool to pinpoint relevant areas for a developer to investigate and correct. For example, if a memory error occurs, the dynamic analysis tool may report the execution location of the error (e.g., memory address where the error was detected, etc.).
Tracking system library errors is advantageous for mission critical software, where the system libraries associated with the software are not typically updated. Further, identifying system library errors allows a developer for standard applications to focus on improving user code to work with the limitations of the system library.
However, one drawback to detecting system library errors is that a dynamic analysis tool is generally unable to distinguish between system library-related errors that originate from inherent problems in the system libraries themselves and those that originate because of a developer's misuse of the system libraries. Typically, the dynamic analysis tool reports all system library-related errors without making any distinctions. Further, because errors that originate from inherent problems in system libraries can be numerous, a developer might have to sift through each reported error to identify which errors are more relevant to improving the underlying application.